package com.zhxt.system.service.impl;


import com.zhxt.common.utils.StringUtils;
import com.zhxt.system.domain.SysTjcode;
import com.zhxt.system.domain.ZhxtItemsStep;
import com.zhxt.system.domain.zhxtvo.*;
import com.zhxt.system.mapper.LeaderMapper;
import com.zhxt.system.mapper.ZhxtMapper;
import com.zhxt.system.service.IZhxtService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;

@Service
public class ZhxtServiceImpl implements IZhxtService {

    @Autowired
    private ZhxtMapper zhxtMapper;
    @Autowired
    private LeaderMapper leaderMapper;
    /**
     * 获取最后更新时间
     */
    public String getLastTime(){
        String lastdatetime=zhxtMapper.getLastTime();
        return lastdatetime==null?"":lastdatetime;
    }

    /**
     * 获取报表一级数据
     */
    public List<ZhxtZItems> getZhxtYItems(String tabcode,String sxdate){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZItems> zhxtZItemsList=zhxtMapper.getZhxtYItems(tabcode,sxdate,yearStr);
        return zhxtZItemsList==null?new ArrayList<>():zhxtZItemsList;
    }

    /**
     * 获取统计指标及排名
     */
    public List<ZhxtZTj> getZhxtZTj(String tabcode, String sxdate){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZTj> zhxtZTjList=zhxtMapper.getZhxtZTj(tabcode,sxdate,yearStr);
        return zhxtZTjList==null?new ArrayList<>():zhxtZTjList;
    }

    /**
     * 获取一个统计指标及排名
     */
    public List<ZhxtZTj> getZhxtZoTj(String tabcode,String sxdate,String itemcode){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZTj> zhxtZTjList=zhxtMapper.getZhxtZoTj(tabcode,sxdate,itemcode,yearStr);
        return zhxtZTjList==null?new ArrayList<>():zhxtZTjList;
    }
    /**
     * 获取机构指标明细
     */
    public List<ZhxtZItems> getZhxtZzItems(String tabcode,String sxdate,String tjcode){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZItems> zhxtZzItemsList=zhxtMapper.getZhxtZzItems(tabcode,sxdate,tjcode,yearStr);
        return zhxtZzItemsList==null?new ArrayList<>():zhxtZzItemsList;
    }

    /**
     * 获取二级指标平均值
     */
    public List<ZhxtZItems> getAvgItems(String tabcode,String sxdate){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZItems> zhxtZItemsList=zhxtMapper.getAvgItems(tabcode,sxdate,yearStr);
        return zhxtZItemsList==null?new ArrayList<>():zhxtZItemsList;
    }

    /**
     * 获取三级指标数据 2022-12-01
     */
    public List<ZhxtZItems> getMItemsList(String tabcode,String sxdate,String tjcode){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
             yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZItems> zhxtZItemsList=zhxtMapper.getMItemsList(tabcode,sxdate,tjcode,yearStr);
        return zhxtZItemsList==null?new ArrayList<>():zhxtZItemsList;
    }

    public List<ZhxtZItems> getQnMItemsList(String tabcode,String sxdate,String qnsxdate,String tjcode){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtZItems> zhxtZItemsList=zhxtMapper.getQnMItemsList(tabcode,sxdate,tjcode,yearStr);
        return zhxtZItemsList==null?new ArrayList<>():zhxtZItemsList;
    }

    /**
     * 总览T指标
     */
    public List<ZhxtXxt> getTListOne(String tabcode,String sxdate,String itemcode){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
             yearStr=sxdate.substring(0,4);
        }
        List<ZhxtXxt> zhxtXxts=zhxtMapper.getTListOne(tabcode,sxdate,itemcode,yearStr);
        return zhxtXxts==null?new ArrayList<>():zhxtXxts;
    }
    //总览指标健康管理+投产
    public List<ZhxtXxt> getTListZlgc(String tabcode,String sxdate){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtXxt> zhxtXxts=zhxtMapper.getTListZlgc(tabcode,sxdate,yearStr);
        return zhxtXxts==null?new ArrayList<>():zhxtXxts;
    }

    /**
     * 获取同步流水
     */
    public List<ZhxtWater> getTbWater(){
        List<ZhxtWater> zhxtWaterList=zhxtMapper.getTbWater();
        return  zhxtWaterList==null?new ArrayList<>():zhxtWaterList;
    }
    /**
     * T指标预警
     */
    public List<ZhxtYjData> getTListyj(String tabcode, String sxdate){
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
            yearStr=sxdate.substring(0,4);
        }
        List<ZhxtYjData> zhxtYjDataList=new ArrayList<>();
        //获取机构列表,构造返回数据数组
        List<SysTjcode> sysTjcodeList=leaderMapper.getTjcodeZzList();
        if(sysTjcodeList!=null){
            for (SysTjcode sysTjcode:sysTjcodeList){
                ZhxtYjData zhxtYjData=new ZhxtYjData();
                zhxtYjData.setTjcode(sysTjcode.getTjcode());
                zhxtYjData.setTjname(sysTjcode.getTjname());
                zhxtYjData.setZhxtYjItems(new ArrayList<>());
                zhxtYjDataList.add(zhxtYjData);
            }
        }
        //System.out.println(zhxtYjDataList);
        //获取T指标列表
        List<ZhxtZItems> zhxtZItemsList=zhxtMapper.getZbItemsList(tabcode,"T");
        if(zhxtZItemsList!=null){
            for (ZhxtZItems zhxtZItems:zhxtZItemsList){
                //获取指标数据及排名
                List<ZhxtZTj> zhxtZTjList=zhxtMapper.getZhxtZoTjpm(tabcode,sxdate,zhxtZItems.getItemcode(),yearStr);
                if(zhxtZTjList!=null){
                    //循环处理机构和指标数据
                    for (ZhxtYjData zhxtYjData:zhxtYjDataList){
                        for (ZhxtZTj zhxtZTj:zhxtZTjList){
                            if(zhxtYjData.getTjcode().equals(zhxtZTj.getTjcode())){
                                ZhxtYjItem zhxtYjItem=new ZhxtYjItem();
                                zhxtYjItem.setItemcode(zhxtZItems.getItemcode());
                                zhxtYjItem.setItemname(zhxtZItems.getItemname());
                                zhxtYjItem.setItemrvalue(zhxtZTj.getRtjdf());
                                zhxtYjItem.setItemmvalue(zhxtZTj.getMtjdf());
                                zhxtYjItem.setItemyvalue(zhxtZTj.getYtjdf());
                                zhxtYjItem.setTjsort(zhxtZTj.getTjsort());
                                if(zhxtZTj.getTjsort() <=5){
                                    zhxtYjItem.setYjstr("B");
                                } else if (zhxtZTj.getTjsort() >= 13 ) {
                                    zhxtYjItem.setYjstr("R");
                                }else {
                                    zhxtYjItem.setYjstr("Y");
                                }
                                zhxtYjData.getZhxtYjItems().add(zhxtYjItem);
                                break;
                            }
                        }
                    }
                }
            }
        }

        return zhxtYjDataList;
    }

    /**
     * 获取一个指标数据-每月最后一天
     */
    public List<ZhxtMonthItem> getLastdayValue(String yearStr,String itemcode){
        return zhxtMapper.getLastdayValue(yearStr,itemcode)==null?new ArrayList<>():zhxtMapper.getLastdayValue(yearStr,itemcode);
    }

    /**
     * 新经营成本一级指标
     */
    public List<ZhxtZItems> getJycbReport(String tjcode,String sxdate){
        return zhxtMapper.getJycbReport(tjcode,sxdate)==null?new ArrayList<>():zhxtMapper.getJycbReport(tjcode,sxdate);
    }

    /**
     * 获取指标列表
     */
    public List<ZhxtZItems> getZbItemsList(String tabcode,String itemtype){
        return zhxtMapper.getZbItemsList(tabcode,itemtype)==null?new ArrayList<>():zhxtMapper.getZbItemsList(tabcode,itemtype);
    }

    /**
     * 获取一个指标数据-每月最后一天
     */
    public List<ZhxtMonthItem> getLastdayValueTjcode(String tjcode,String yearStr,String itemcode){
        return zhxtMapper.getLastdayValueTjcode(tjcode,yearStr,itemcode)==null?new ArrayList<>():zhxtMapper.getLastdayValueTjcode(tjcode,yearStr,itemcode);
    }

    /**
     * 获取指标区间定义
     */
    public List<ZhxtItemsStep> getItemStep(String tabcode,String sxdate, String tjcode){
        //获取机构指标
        List<ZhxtZItems> zhxtZItemsList=this.getMItemsList("1003",sxdate,tjcode);
        //获取机构指标区间
        List<ZhxtItemsStep> zhxtItemsStepList=zhxtMapper.getItemStep(tabcode,tjcode);
        if(zhxtItemsStepList!=null && zhxtZItemsList!=null){
            for (ZhxtItemsStep zhxtItemsStep:zhxtItemsStepList){
                for (ZhxtZItems zhxtZItems:zhxtZItemsList){
                    Double tmpn=0.0;
                    if(zhxtItemsStep.getItemcode().equals(zhxtZItems.getItemcode())){
                        tmpn = zhxtZItems.getItemmvalue();
                        if(zhxtItemsStep.getItemcode().equals("202302231858003") || zhxtItemsStep.getItemcode().equals("202301091602023") || zhxtItemsStep.getItemcode().equals("202302231858006")){
                            if(tmpn < zhxtItemsStep.getMkvalue()){
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getMkvalue());
                                zhxtItemsStep.setShowname("门槛");
                            }else if(tmpn >= zhxtItemsStep.getMkvalue() && tmpn < zhxtItemsStep.getMbvalue()){
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getMbvalue());
                                zhxtItemsStep.setShowname("目标");
                            }else{
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getTzvalue());
                                zhxtItemsStep.setShowname("挑战");
                            }
                        }else{
                            if(tmpn >= zhxtItemsStep.getMkvalue()){
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getMkvalue());
                                zhxtItemsStep.setShowname("门槛");
                            }else if(tmpn <= zhxtItemsStep.getMkvalue() && tmpn > zhxtItemsStep.getMbvalue()){
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getMbvalue());
                                zhxtItemsStep.setShowname("目标");
                            }else{
                                zhxtItemsStep.setShowvalue(zhxtItemsStep.getTzvalue());
                                zhxtItemsStep.setShowname("挑战");
                            }
                        }
                        break;
                    }
                }
            }
        }
        return zhxtItemsStepList;
    }

    /**
     * 获取三级指标数据 2022-12-01 经营成本
     */
    public List<ZhxtMonthList> getMItemsListJy(String tabcode,String sxdate,String tjcode){
        String monStr="";
        String yearStr="";
        if(StringUtils.isNotEmpty(sxdate)){
             monStr=sxdate.substring(5,7);
             yearStr=sxdate.substring(0,4);
        }
        String[] yearmonList = {"01","02","03","04","05","06","07","08","09","10","11","12"};
        List<ZhxtMonthList> zhxtMonthListListrl=new ArrayList<>();
        for(String str:yearmonList){
            ZhxtMonthList zhxtMonthList=new ZhxtMonthList();
            zhxtMonthList.setYearmon(str);
            zhxtMonthList.setZhxtMonthItems(new ArrayList<>());
            zhxtMonthListListrl.add(zhxtMonthList);
        }

        List<ZhxtMonthItem> zhxtMonthItemList=zhxtMapper.getLastdayValueTjcodeJy(tjcode,yearStr);
        if(zhxtMonthListListrl !=null && zhxtMonthItemList!=null){
            for (ZhxtMonthList zhxtMonthList:zhxtMonthListListrl) {
                for (ZhxtMonthItem zhxtMonthItem : zhxtMonthItemList) {
                    if (zhxtMonthItem.getYearmon().equals(zhxtMonthList.getYearmon())) {
                        zhxtMonthList.getZhxtMonthItems().add(zhxtMonthItem);
                    }
                }
            }
        }
        return zhxtMonthListListrl;
    }
}
